package iedcyt.acute.dataAccess.idao.acute1;

import iedcyt.acute.dataAccess.domain.acute1.Author_Data;
import iedcyt.acute.dataAccess.idao.IDao;

import java.util.List;

public interface IAuthorDataDao extends IDao {

	/**
	 * Inserta la propiedad de un autor
	 * @param au: autor
	 */
	void insert(Author_Data au);
	
	/**
	 * Actualiza la propiedad de un autor
	 * @param au: autor
	 */
	void update(Author_Data au);

	/**
	 * Actualiza o inserta si no existe la propiedad de un autor
	 * @param auD
	 */
	void updateOrInsert(Author_Data auD);
	
	/**
	 * Selecciona todas la propiedades de un autor especificado
	 * @param id: identificador del autor
	 * @return lista de propiedades del autor
	 */
	List<Author_Data> select(int id);
	/**
	 * Seleccionar una propiedad determinada de todos los autores
	 * @param dataName
	 * @return
	 */
	List<Author_Data> selectByAuthorData(String dataName);
	/**
	 * Seleccionar todas las propiedades de todos los autores
	 * @return
	 */
	List<Author_Data> selectAll();
	/**
	 * Obtiene las propiedad especificada de un autor.
	 * @param idAu
	 * @param dataName
	 * @return Devuelve la propiedad del autor
	 */
	List<Author_Data> selectByIdAuAndAuthorData(int idAu, String dataName);
	
	
	/**
	 * Elimina todos los autores.
	 */
	void deleteAll();

	/**
	 * elimina las propiedades de un autor
	 * @param id: identificador del autor
	 */
	void deleteByIdAu(int idAu);
	
	/**
	 * Elimina una propiedad del autor
	 * @param idAu
	 * @param dataName
	 */
	void deleteByIdAuByAuthorData(int idAu, String dataName);

	void create();

	/**
	 * 
	 * @return listado de los distintos nombres existentes en las propiedades
	 */
	List<String> selectDistinctsDataNames();

	

	
	

	


}

